#define _CRT_SECURE_NO_WARNINGS 1
//#include<iostream>
//using namespace std;
//
//int globalVar = 1;
//static int staticGlobalVar = 1;
//void Test()
//{
//	static int staticVar = 1;
//	int localVar = 1;
//	int num1[10] = { 1, 2, 3, 4 };
//	char char2[] = "abcd";
//	const char* pChar3 = "abcd";
//	int* ptr1 = (int*)malloc(sizeof(int) * 4);
//	int* ptr2 = (int*)calloc(4, sizeof(int));
//	int* ptr3 = (int*)realloc(ptr2, sizeof(int) * 4);
//	free(ptr1);
//	free(ptr3);
//}
//
//void Test2()
//{
//	//动态申请1个int类型的空间
//	int* ptr1 = new int();
//	//动态申请1个int类型的空间并初始化为10
//	int* ptr2 = new int(10);
//	//动态申请10个int类型的空间
//	int* ptr3 = new int[10];
//
//	delete ptr1;
//	delete ptr2;
//	//匹配[],释放10个空间
//	delete[] ptr3;
//}
//
//
//class A
//{
//public:
//	A(int a = 0)
//		: _a(a)
//	{
//		cout << "A():" << this << endl;
//			
//	}
//	~A()
//	{
//		cout << "~A():" << this << endl;
//	}
//private:
//	int _a;
//};
//int main()
//{
//	// new/delete 和 malloc/free最大区别是 new/delete对于[自定义类型]除了开空间还会调用构造函数和析构函数
//	A* p1 = (A*)malloc(sizeof(A));
//	A* p2 = new A(1);
//	free(p1);
//	delete p2;
//	return 0;
//}

//int main()
//{
//	Test2();
//	return 0;
//}

#include<iostream>
#include<string>
using namespace std;

//int main()
//{
//
//	string a = "hello world";
//
//	string b = a;
//
//	if (a.c_str() == b.c_str())
//
//	{
//
//		cout << "true" << endl;
//
//	}
//
//	else 
//		cout << "false" << endl;
//
//	string c = b;
//
//	c = "";
//
//	if (a.c_str() == b.c_str())
//
//	{
//
//		cout << "true" << endl;
//
//	}
//
//	else 
//		cout << "false" << endl;
//
//	a = "";
//
//	if (a.c_str() == b.c_str())
//
//	{
//
//		cout << "true" << endl;
//
//	}
//
//	else 
//		cout << "false" << endl;
//
//	return 0;
//
//}
//

//int main()
//
//{
//
//	string str("Hello Bit.");
//
//	str.reserve(111);
//
//	str.resize(5);
//
//	str.reserve(50);
//
//	cout << str.size() << ":" << str.capacity() << endl;
//
//	return 0;
//
//}
//


//int main()
//{
//
//	string strText = "How are you?";
//
//	string strSeparator = " ";
//
//	string strResult;
//
//	int size_pos = 0;
//
//	int size_prev_pos = 0;
//
//	while ((size_pos = strText.find_first_of(strSeparator, size_pos)) != string::npos)
//
//	{
//
//		strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
//
//		cout << strResult << " ";
//
//		size_prev_pos = ++size_pos;
//
//	}
//
//	if (size_prev_pos != strText.size())
//
//	{
//
//		strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
//
//		cout << strResult << " ";
//
//	}
//
//	cout << endl;
//
//	return 0;
//
//}

//把字符串转换成整数
//https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&&tqId=11202&rp=6&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking
//#include <cctype>
//class Solution {
//public:
//    int StrToInt(string str) {
//        int ans = 0, plus = 1;
//        for (auto ch : str)
//        {
//            //判断是字符直接返回0
//            if (isalpha(ch))
//            {
//                return 0;
//            }
//            //判断加减，改变符号位
//            if (ch == '+' || ch == '-')
//            {
//                plus = ch == '+' ? 1 : -1;
//            }
//            //是数字进行运算
//            if (isdigit(ch))
//            {
//                ans = ans * 10 + ch - '0';
//            }
//
//        }
//
//        return ans * plus;
//    }
//};
//int main()
//{
//    cout<<Solution().StrToInt("-111112")<<endl;
//    return 0;
//}

//344.反转字符串
//https://leetcode.cn/problems/reverse-string/

//class Solution {
//public:
//    void reverseString(vector<char>& s) {
//        for (int i = 0, j = s.size() - 1; i < s.size() / 2; i++, j--)
//        {
//            swap(s[i], s[j]);
//        }
//
//    }
//};


//找字符串中第一个只出现一次的字符
//https ://leetcode-cn.com/problems/first-unique-character-in-a-string/
class Solution {
public:

    int firstUniqChar(string s) {
        for (int i = 0; i < s.size(); i++)
        {
            if (s.find(s[i]) == s.rfind(s[i]))
            {
                return i;
            }
        }
        return -1;
    }
};